//package com.weaiken.util;
//
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.net.HttpURLConnection;
//import java.net.MalformedURLException;
//import java.net.URL;
//import java.util.Map;
//
//import android.graphics.Bitmap;
//import android.graphics.BitmapFactory;
//import android.graphics.Matrix;
//import android.graphics.drawable.BitmapDrawable;
//import android.graphics.drawable.Drawable;
//
///**
// * ImageUtils
// * <ul>
// * convert between Bitmap, byte array, Drawable
// * <li>{@link #bitmapToByte(Bitmap)}</li>
// * <li>{@link #bitmapToDrawable(Bitmap)}</li>
// * <li>{@link #byteToBitmap(byte[])}</li>
// * <li>{@link #byteToDrawable(byte[])}</li>
// * <li>{@link #drawableToBitmap(Drawable)}</li>
// * <li>{@link #drawableToByte(Drawable)}</li>
// * </ul>
// * <ul>
// * get image
// * <li>{@link #getInputStreamFromUrl(String, int)}</li>
// * <li>{@link #getBitmapFromUrl(String, int)}</li>
// * <li>{@link #getDrawableFromUrl(String, int)}</li>
// * </ul>
// * <ul>
// * scale image
// * <li>{@link #scaleImageTo(Bitmap, int, int)}</li>
// * <li>{@link #scaleImage(Bitmap, float, float)}</li>
// * </ul>
// * 
// * @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2012-6-27
// */
//public class ImageUtils {
//
//    /**
//     * convert Bitmap to byte array
//     * 
//     * @param b
//     * @return
//     */
//    public static byte[] bitmapToByte(Bitmap b) {
//        if (b == null) {
//            return null;
//        }
//
//        ByteArrayOutputStream o = new ByteArrayOutputStream();
//        b.compress(Bitmap.CompressFormat.PNG, 100, o);
//        return o.toByteArray();
//    }
//
//    /**
//     * convert byte array to Bitmap
//     * 
//     * @param b
//     * @return
//     */
//    public static Bitmap byteToBitmap(byte[] b) {
//        return (b == null || b.length == 0) ? null : BitmapFactory.decodeByteArray(b, 0, b.length);
//    }
//
//    /**
//     * convert Drawable to Bitmap
//     * 
//     * @param d
//     * @return
//     */
//    public static Bitmap drawableToBitmap(Drawable d) {
//        return d == null ? null : ((BitmapDrawable)d).getBitmap();
//    }
//
//    /**
//     * convert Bitmap to Drawable
//     * 
//     * @param b
//     * @return
//     */
//    public static Drawable bitmapToDrawable(Bitmap b) {
//        return b == null ? null : new BitmapDrawable(b);
//    }
//
//    /**
//     * convert Drawable to byte array
//     * 
//     * @param d
//     * @return
//     */
//    public static byte[] drawableToByte(Drawable d) {
//        return bitmapToByte(drawableToBitmap(d));
//    }
//
//    /**
//     * convert byte array to Drawable
//     * 
//     * @param b
//     * @return
//     */
//    public static Drawable byteToDrawable(byte[] b) {
//        return bitmapToDrawable(byteToBitmap(b));
//    }
//
//    /**
//     * get input stream from network by imageurl, you need to close inputStream yourself
//     * 
//     * @param imageUrl
//     * @param readTimeOutMillis
//     * @return
//     * @see ImageUtils#getInputStreamFromUrl(String, int, boolean)
//     */
//    public static InputStream getInputStreamFromUrl(String imageUrl, int readTimeOutMillis) {
//        return getInputStreamFromUrl(imageUrl, readTimeOutMillis, null);
//    }
//
//    /**
//     * get input stream from network by imageurl, you need to close inputStream yourself
//     * 
//     * @param imageUrl
//     * @param readTimeOutMillis read time out, if less than 0, not set, in mills
//     * @param requestProperties http request properties
//     * @return
//     * @throws MalformedURLException
//     * @throws IOException
//     */
//    public static InputStream getInputStreamFromUrl(String imageUrl, int readTimeOutMillis,
//                                                    Map<String, String> requestProperties) {
//        InputStream stream = null;
//        try {
//            URL url = new URL(imageUrl);
//            HttpURLConnection con = (HttpURLConnection)url.openConnection();
//            HttpUtils.setURLConnection(requestProperties, con);
//            if (readTimeOutMillis > 0) {
//                con.setReadTimeout(readTimeOutMillis);
//            }
//            stream = con.getInputStream();
//        } catch (MalformedURLException e) {
//            closeInputStream(stream);
//            throw new RuntimeException("MalformedURLException occurred. ", e);
//        } catch (IOException e) {
//            closeInputStream(stream);
//            throw new RuntimeException("IOException occurred. ", e);
//        }
//        return stream;
//    }
//
//    /**
//     * get drawable by imageUrl
//     * 
//     * @param imageUrl
//     * @param readTimeOutMillis
//     * @return
//     * @see ImageUtils#getDrawableFromUrl(String, int, boolean)
//     */
//    public static Drawable getDrawableFromUrl(String imageUrl, int readTimeOutMillis) {
//        return getDrawableFromUrl(imageUrl, readTimeOutMillis, null);
//    }
//
//    /**
//     * get drawable by imageUrl
//     * 
//     * @param imageUrl
//     * @param readTimeOutMillis read time out, if less than 0, not set, in mills
//     * @param requestProperties http request properties
//     * @return
//     */
//    public static Drawable getDrawableFromUrl(String imageUrl, int readTimeOutMillis,
//                                              Map<String, String> requestProperties) {
//        InputStream stream = getInputStreamFromUrl(imageUrl, readTimeOutMillis, requestProperties);
//        Drawable d = Drawable.createFromStream(stream, "src");
//        closeInputStream(stream);
//        return d;
//    }
//
//    /**
//     * get Bitmap by imageUrl
//     * 
//     * @param imageUrl
//     * @param readTimeOut
//     * @return
//     * @see ImageUtils#getBitmapFromUrl(String, int, boolean)
//     */
//    public static Bitmap getBitmapFromUrl(String imageUrl, int readTimeOut) {
//        return getBitmapFromUrl(imageUrl, readTimeOut, null);
//    }
//
//    /**
//     * get Bitmap by imageUrl
//     * 
//     * @param imageUrl
//     * @param requestProperties http request properties
//     * @return
//     */
//    public static Bitmap getBitmapFromUrl(String imageUrl, int readTimeOut, Map<String, String> requestProperties) {
//        InputStream stream = getInputStreamFromUrl(imageUrl, readTimeOut, requestProperties);
//        Bitmap b = BitmapFactory.decodeStream(stream);
//        closeInputStream(stream);
//        return b;
//    }
//
//    /**
//     * scale image
//     * 
//     * @param org
//     * @param newWidth
//     * @param newHeight
//     * @return
//     */
//    public static Bitmap scaleImageTo(Bitmap org, int newWidth, int newHeight) {
//        return scaleImage(org, (float)newWidth / org.getWidth(), (float)newHeight / org.getHeight());
//    }
//
//    /**
//     * scale image
//     * 
//     * @param org
//     * @param scaleWidth sacle of width
//     * @param scaleHeight scale of height
//     * @return
//     */
//    public static Bitmap scaleImage(Bitmap org, float scaleWidth, float scaleHeight) {
//        if (org == null) {
//            return null;
//        }
//
//        Matrix matrix = new Matrix();
//        matrix.postScale(scaleWidth, scaleHeight);
//        return Bitmap.createBitmap(org, 0, 0, org.getWidth(), org.getHeight(), matrix, true);
//    }
//
//    /**
//     * close inputStream
//     * 
//     * @param s
//     */
//    private static void closeInputStream(InputStream s) {
//        if (s == null) {
//            return;
//        }
//
//        try {
//            s.close();
//        } catch (IOException e) {
//            throw new RuntimeException("IOException occurred. ", e);
//        }
//    }
//}
